package com.shujia.day13;

public class Code03Exception {
    public static void main(String[] args) {
        /*
            异常处理：
                1.try catch  该方式是对可能发生错误的代码进行捕获 ，如果捕获到异常，可以根据自定义处理方式进行处理
                2.throws 将可能出现错误的代码进行抛出 (自己不处理，交给Java默认处理)

            异常处理的意义：
                对异常处理后，程序可以继续运行

            注意：
                1、当try中的异常被catch捕获到后(发生异常) 那么该try中当前行代码后续的其他代码就不会继续执行，而去执行
                        catch中作用域的代码
                2、当try中存在有多个不同类型的异常，那么可以给定多个catch分开进行捕获

         */

        int[] ints = {1, 2, 3, 4, 5};
        int a = 10;
        int b = 0;


        try {
            System.out.println("a/b执行了吗？"); // 没执行
            System.out.println(a / b);

            // try 用于存放可能会发生错误的代码
            System.out.println(ints[6]);  // 发生 ArrayIndexOutOfBoundsException 异常 怎么处理？

        } catch (ArrayIndexOutOfBoundsException e) {  // () 中需要给定要捕获异常的类型 给定参数名（对象名）
            System.out.println(e.getMessage());  // 获取消息
        } catch (ArithmeticException e) {
            System.out.println(e.getMessage());
        } finally {  // finally表示最终的意思
            System.out.println("这个作用域中的代码，不管前面有没有异常都会执行");
        }

        System.out.println("代码可以执行到这吗？");

    }
}
